查看原文
其他

4.4k Star,360公司内部广泛应用的软件——Atlas

Qihoo360 FOSS Lab 2021-09-10

整理 | 叶子

一、软件介绍

Atlas是由 Qihoo 360,  Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。目前该项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atlas平台,每天承载的读写请求数达几十亿条。

主要功能:

* 读写分离
* 从库负载均衡
* IP过滤
* SQL语句黑白名单
* 自动分表

架构原理

Atlas包括以下组件:

  • 采用Hbase存储元数据

  • 采用Solr实现索引

  • Ingest/Export 采集导出组件 Type System类型系统 Graph Engine图形引擎 共同构成Atlas的核心机制

  • 所有功能通过API向用户提供,也可以通过Kafka消息系统进行集成

  • Atlas支持各种源获取元数据:Hive,Sqoop,Storm。。。

  • 还有优秀的UI支持

效果图


二、项目地址


https://github.com/Qihoo360/Atlas


三、下载安装


1.环境准备

安装之前 先要准备好:

JDK1.8

Zookeeper

Kafka

Hbase

Solr

在启动Atlas时会配置这些环境变量的地址,所以一定要确保以上组件正常运行。

由于在编译时可以选择内部集成,所以这些Atlas是可以自带的,但是JDK一定要安装好。

在安装Altas中,需要Solr 预先创建好collection

<code ,="" consolas,="" monaco,="" menlo,="" monospace;border-radius:="" 0px;font-size:="" 12px;padding:="" 15px;background-color:="" rgb(240,="" 240,="" 240);overflow-x:="" scroll;"="" style="box-sizing: inherit; font-family: "Operator Mono"; font-size: 13px; margin: 0px; padding: 0px; border: none; border-radius: 0px; background: rgb(246, 246, 246); color: rgb(51, 51, 51); overflow: visible; word-break: normal; display: -webkit-box; line-height: 1.5;">bin/solrcreate-cvertex_index-shards3-replicationFactor2

bin/solrcreate-cedge_index-shards3-replicationFactor2

bin/solrcreate-cfulltext_index-shards3-replicationFactor2

在solr中验证创建成功。

2.安装Atlas

到编译好的包的路径下 apache-atlas-sources-2.1.0/distro/target

将生成好的安装包 apache-atlas-2.1.0-server.tar.gz 拷贝到目标路径下。

解压:

tar-zxvfapache-atlas-2.1.0-server.tar.gz3.修改配置

进入conf目录下:

export JAVA_HOME=/opt/jdk1.8.0_191/
export MANAGE_LOCAL_HBASE=true
export MANAGE_LOCAL_SOLR=true

如果使用内嵌,那么配置结束,直接去 启动Atlas

但是大部分时候,需要使用已经有的组件进行集成,所以设置为false。

vimatlas-application.properties

这里就是设置Hbase Solr等配置

bin/atlas_start.py

启动成功后访问:

http://slave01:21000

admin/admin登录

四、Q & A


Q: 是否支持多字符集?
A: 这是我们对原版MySQL-Proxy的第一项改进,符合国情是必须的

Q: 自动读写分离挺好,但有时候我写完马上就想读,万一主从同步延迟怎么办?
A: SQL语句前增加 /*master*/ 就可以将读请求强制发往主库

Q: 主库宕机,读操作受影响么?
A: 在atlas中是不会的! 能问这样的问题, 说明你用过官方的mysql-proxy, 很遗憾官方版本并未解决这个问题

Q: 检测后端DB状态会阻塞正常请求么?
A: 不会, atlas中检测线程是异步进行检测的,即使有db宕机,也不会阻塞主流程。在atlas中没有什么异常会让主流程阻塞! 同上,官方版本也会让你失望

Q: 想下线一台DB, 又不想停掉mysql server, 怎么办?
A: 可以通过管理接口手动上下线后端db, atlas会优先考虑管理员的意愿

Q: 想给集群中增加一台DB, 不想影响线上正常访问可以吗?
A: 通过管理接口可以轻松实现

Q: 相比官方mysql-proxy, atlas还有哪些改进?
A: 这实在是个难以回答的问题,性能,稳定性,可靠性,易维护性,我们做过几十项的改进,下面会尽量列一些较大的改动

五、名字来源


Atlas,希腊神话中双肩撑天的巨人,普罗米修斯的兄弟,最高大强壮的神之一,因反抗宙斯失败而被罚顶天。我们期望这个系统能够脚踏后端DB,为前端应用撑起一片天。
参考资料:

https://my.oschina.net/u/4187920/blog/4872080

https://my.oschina.net/u/4299953/blog/4880992




往期推荐

红旗Linux桌面系统v11预览版发布:全新UI设计

2021-01-07

Asahi Linux项目正式启动:致力于将linux移植到苹果M1的项目

2021-01-07

Qt 5.15转入商业化LTS阶段,导致外部贡献者弃坑

2021-01-06


扫码关注最新动态

公众号ID:fosslab

我就知道你“在看”
: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存